#coding=UTF-8
import  numpy
def docRS(queryq,yita,dictionary):#定义一个函数queryq为输入查询文档,yita为选择一篇文档选取词项的个数
    idx = 0
    i=0
    for item in dictionary: #遍历字典里面的所有项，从第零项开始 doc是辉辉建立的那个字典，名称定义需要看辉辉
        if len(set(queryq).difference([item[0] for item in list(sorted(item.items(), key=lambda x: -x[1]))][:yita]))==0:  # 挑出词典里面与a相似的文档，并且考虑的是前yita=?个词
            docre[i]=idx
            i += 1
        idx += 1
    idxs = set(docre)
    doc1=[sorted(dictionary[item].items(), key=lambda x: -x[1]) for item in idxs]
    word_list=[]
    word1_list=[]
    for item in doc1:
        for j in item:
            if j[0] not in queryq:
                word_list.append(j[0])

    return list(set(docre)),list(set(word_list)) #返回字典中相关的文档序号list(set(docre))，返回查询相关的高频词list(set(word_list))
if __name__ =='__main__':
    dictionary=[{'a':0.25,'b':0.16,'c':0.05},{'b':0.1,'d':0.32,'e':0.36},{'a':0.3,'c':0.32,'d':0.25},{'b':0.41,'d':0.62,'e':0.35}]#文档词项字典
    a=['a','c']#输入要查询相关推荐的文档
    docre = numpy.array([0] * 100)  # 存储要输出的相关文档
    yita=3
    a,b=docRS(a,yita,dictionary)
    print('相关文档序号:',a)
    print('相关文档中的出现的高频',b)
